// 引入express框架
const express = require('express');
// 路径处理模块
const path = require('path');
// 导入mongoose模块
const mongoose = require('mongoose');
// 导入bodyParser模块
const bodyParser = require('body-parser');
//引入morgan模块
const morgan = require('morgan');

// 导入todo路由案例
const todoRouter = require('./router/todo');

// 数据库连接
mongoose.connect('mongodb://cs:cs@localhost:27017/todos', { useNewUrlParser: true, useUnifiedTopology: true }).then(() => {
    console.log('数据库连接成功！');
}).catch(err => {
    console.log('数据库连接失败！');
    console.log(err);
});

// 创建web服务器
const app = express();

// 静态资源访问服务功能
app.use(express.static(path.join(__dirname, 'public')));
// 拦截所有请求
// extended: false 方法内部使用querystring模块处理请求参数的格式
// extended: true 方法内部使用第三方模块qs处理请求参数的格式
app.use(bodyParser.urlencoded({extended: false}));
//打印请求信息
app.use(morgan('dev'));

// 当客户端的请求路径以/todo开头时
app.use('/todo', todoRouter);

// express错误处理
app.use((err, req, res, next) => {
    console.log(err.message);
    res.status(500).send(err.message);
});

// 监听3000端口
app.listen(3000);
console.log('服务器已启动，请访问3000端口！');

